[Oracle] 解析在没有备份的情况下undo损坏怎么办
------------------------------------ ----------- -------------
SQL>drop rollback segment "_SYSSMU4_168502732$";
_SYSSMU39_4040503138$ ONLINE
取消隐藏参数的设置:
Step 4.
SYSTEM ONLINE
SQL>drop rollback segment "_SYSSMU1_3281912951$";
创建新的spfile,覆盖旧的spfile:
SQL> alter system reset "_offline_rollback_segments" scope=spfile;
打开数据库的目的是为了找出受影响的回滚段:
undo_retention integer 900
_SYSSMU33_99444166$ ONLINE
_SYSSMU38_4059847715$ ONLINE
ORA-01157: cannot identify/lock data file 14 - see DBWR trace file
SEGMENT_NAME STATUS
1. 修改undo表空间管理为手动;
_SYSSMU1_3281912951$ OFFLINE
SQL> drop tablespace undo1 including contents;
*.undo_tablespace='undo2' --指定一个新的undo表空间
SQL> create pfile='H:\initO06DMS0.ora' from spfile;
2. 设置隐藏参数(_offline_rollback_segments或_corrupted_rollback_segments)标识受影响的回滚段,使Oracle忽略其上的未提交事务;
undo_management string AUTO
ORA-01110: data file 14: 'I:\INTEL_DATA\O06DMS0\UNDO1.O06DMS0'
SQL> startup
SQL> startup pfile='H:\initO06DMS0.ora'Step 1.
以原来的spfile启动数据库:
------------------------------ ----------------
SQL> startup;
SQL> alter database datafile 'I:\INTEL_DATA\O06DMS0\UNDO1.O06DMS0' offline drop;
SYSTEM ONLINE
SEGMENT_NAME STATUS
最终检查一下:
undo_retention integer 900
SQL> show parameter undo
_SYSSMU34_1916939664$ ONLINE_SYSSMU35_1133967719$ ONLINE
_SYSSMU4_168502732$ OFFLINE
创建一个临时的pfile:
4. 还原undo表空间管理为自动。SQL>drop rollback segment "_SYSSMU7_3984293596$";
还原undo表空间管理为自动:
SQL> shutdown immediate;_SYSSMU32_162619813$ ONLINE
Step 3.
*.undo_management='manual' -- undo表空间管理方式修改为手动
SQL> alter database open;
重启使其生效:
实验如下:
Step 2.
_SYSSMU36_2617425201$ ONLINE
_SYSSMU37_2692202156$ ONLINE
undo_tablespace string undo2
SQL>drop rollback segment "_SYSSMU10_1201331463$";
_SYSSMU3_1987193959$ OFFLINE
3. 手动删除受影响的回滚段和undo表空间,然后重建新的undo表空间;
SQL> shutdown immediate;
SQL> select segment_name,status from dba_rollback_segs;
*._offline_rollback_segments=('_SYSSMU10_1201331463$','_SYSSMU9_2926456744$','_SYSSMU8_640224757$','_SYSSMU7_3984293596$','_SYSSMU6_3694658906$','_SYSSMU5_3475919656$','_SYSSMU4_168502732$','_SYSSMU3_1987193959$','_SYSSMU2_3908286755$','_SYSSMU1_3281912951$') --把所有受影响的回滚段都列在这里
undo_tablespace string undo1
SQL>drop rollback segment "_SYSSMU5_3475919656$";
并以改pfile重新启动数据库:
SQL>drop rollback segment "_SYSSMU9_2926456744$";
说明该undo文件已经损坏或丢失,把该文件offline之后就可以打开数据库了:
如果undo数据文件损坏,数据库只能到mount状态,open时会出现以下错误:
SQL>drop rollback segment "_SYSSMU2_3908286755$";
_SYSSMU6_3694658906$ OFFLINE
SQL>drop rollback segment "_SYSSMU8_640224757$";
_SYSSMU2_3908286755$ OFFLINE
SQL> show parameter undo_SYSSMU8_640224757$ OFFLINE
_SYSSMU40_1968985325$ ONLINE
重建新的undo表空间:
NAME TYPE VALUE
手动删除旧的undo表空间:
undo_management string AUTO
_SYSSMU5_3475919656$ OFFLINE
关闭数据库:
SQL>drop rollback segment "_SYSSMU3_1987193959$";
手动删除受影响的回滚段:
SQL> select segment_name,status from dba_rollback_segs;
SQL> create undo tablespace undo2 datafile 'I:\INTEL_DATA\O06DMS0\UNDO2.O06DMS0' size 100m;
NAME TYPE VALUE
关闭数据库:
_SYSSMU10_1201331463$ OFFLINE
SQL> shutdown immediate;
修改pfile如下:
如果Oracle在运行中很不幸遇到undo损坏,当然最好的方法是完全恢复,不过如果没有备份,可以采用一种非常规的手段(利用Oracle的隐藏参数),如果此时undo包含未提交的事务,会造成一点点的数据丢失(一般都是可忍受的),如果没有未提交的事务,则不会有数据丢失。其主要步骤有:
------------------------------------ ----------- -------------------SQL> create spfile from pfile='H:\initO06DMS0.ora';
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/oracle/2619.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
是因为scan的IP问题补占用
时间:2021-01-20
-
还你一个干净的model 2、功
时间:2021-01-20
-
既然 ROWNUM 列并不是真实存
时间:2021-01-20
-
Real Application Clusters
时间:2021-01-20
-
在tools-preferences-connection(
时间:2021-01-20
-
Windows Sever 2012下Oracle 12c安
时间:2021-01-10
-
Oracle安装监听器错误的解
时间:2021-01-07
-
oracle远程连接服务器数据
时间:2021-01-07
热门文章
-
Oracle存储过程编程详解
时间:2020-12-07
-
Azure Queue Storage 基本用法 Azure Storage 之
时间:2020-12-26
-
win10下oracle 11g安装图文教程
时间:2020-12-25
-
oracle 数据库学习 基本结构介绍
时间:2020-12-13
-
Azure File Storage 基本用法 Azure Storage 之 F
时间:2020-12-26
-
windows使用sqlpus连接oracle 数据库的教程图
时间:2020-12-25
-
Window下Oracle Database 11g 发行版2安装教程
时间:2020-12-29
-
Oracle解锁的方式介绍
时间:2020-12-14
-
Oracle 12c Study之Installer Oracle
时间:2021-01-06
-
linux下oracle设置开机自启动实现方法
时间:2020-12-13
